<?php
// 步骤

// 第一步：验证是否有误

// 第二步：验证格式

// 第三步：验证大小

// 第四步：验证是否是http上传

// 第五步：上传实现
//验证格式
function check($file,$allow=array('image/jpeg', 'image/png', 'image/gif'),$size=1234656)
{
    // 1、验证是否有误
    if ($file['error'] != 0) {
        switch ($file['error']) {
            case 1:
                return "文件大小超过了php.ini中允许的最大值";
            case 2:
                return "文件大小超过了表单允许的最大值";
            case 3:
                return "只有部分文件上传";
            case 4:
                return "没有文件上传";
            case 6:
                return "找不到临时文件";
            case 7:
                return "文件写入失败 ";
        }
    }
    // 2、验证格式
    // $allow = array('image/jpeg', 'image/png', 'image/gif');
    // 创建一个 fileinfo 资源
    $info = finfo_open(FILEINFO_MIME_TYPE);
    //将finfo资源和文件做比较
    $min = finfo_file($info, $file['tmp_name']); //获取文件信息
    // return in_array($min,$allow)?"":"只能上传". implode(",",$allow)."的格式文件";
    if (!in_array($min, $allow)) {
        return "只能上传" . implode(",", $allow) . "的格式文件";
    }
    //3、验证大小
    // $size = 12345;
    // $k=1024;
    // var_dump($_FILES);
    if ($file['size'] > $size) {
        return "文件不能超过" . floor($size / 1024) . "k";
    }
    // 第四步：验证是否是http上传
    if (is_uploaded_file($file['tmp_name'])) {
        // 第五步：上传实现
            $path = uniqid('user') . rand(100, 500) . $file['name'];
            echo "上传成功";
    }else{
        return  '文件不是HTTP POST上传的<br>';
    }
}

if (!empty($_POST)) {
    echo check($_FILES['image']);
}
?>


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <form action="" method="post" enctype="multipart/form-data">
        <input type="file" name="image">
        <input type="submit" value="上传" name="sub">
    </form>
</body>

</html>